#ifndef MQTT_CLIENT_H
#define MQTT_CLIENT_H

#include <string>
#include <functional>
#include <cstdint>
#include <MQTTClient.h> // 依赖paho.mqtt.c库
#include "config/config.h"

// MQTT 配置结构体
namespace equip_system
{

class MqttClient
{
public:
    MqttClient();
    ~MqttClient();

    // 连接到MQTT服务器
    bool connect(const MqttConfig &config);

    // 发布消息到指定主题
    bool publish(const std::string &topic, const std::string &payload, int qos = 1, bool retain = false);

    // 是否连接
    bool isConnected() const
    {
        return connected_; // 假设内部有connected成员变量记录连接状态
    };

    // 断开连接
    void disconnect();

    void set_connect_callback(std::function<void(bool)> callback)
    {
        connect_callback_ = callback;
    }

private:
    void *client_handle_; // Paho MQTT客户端句柄
    bool connected_;      // 连接状态
    MqttConfig config_;   // 保存配置
    std::function<void(bool)> connect_callback_; // 连接状态回调
};

}; // namespace equip_system

#endif // MQTT_CLIENT_H
